#pragma once

#include <memory>

#include "../../inc/tinyxml2.h"

#include "../Math/Vector.h"
#include "../Math/KernelFunction/KernelFunctionBase.h"

using namespace std;

class CKernelNeuron
{
public:
	CKernelNeuron() = delete;

	CKernelNeuron(int inputDimension, const Vector & kernelBasePoint, const shared_ptr<IKernelFunctionBase> & spfKernelFunction);

public:
	virtual double Execute(const Vector & Input);

	tinyxml2::XMLElement * SerialToXML(tinyxml2::XMLDocument & xmlDoc);

private:
	int m_InputDimension;

	shared_ptr<IKernelFunctionBase> m_KernelFunction;
};